package com.example.demo.mapper;

import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2022-10-06
 * Time: 21:04
 */

//在mapper里面写数据
@Mapper // mybaits interface
//加上这个注解之后 变成了mybaits的接口 不需要定义类来实现接口
//直接通过配置文件来实现接口
//1.优点 将自己的生命周期交给容器来托管
//2.实现interface和xml之间的关联关系
public interface UserMapper {

    //实现登录功能 演示sql注入
    //可以传用户名 密码 也可以传对象
    public UserInfo login(@Param("username") String username,
                          @Param("password") String password);


    //根据名称实现模糊查询
    public List<UserInfo> getListByName(@Param("username") String username);

    // 根据用户 id 查询用户
    //Param 这个注解 注明了在配置文件中这个这个参数名是 id
    public UserInfo getUserById(@Param("id") Integer id);
    //下一步 创建XML 实现接口


    //一对多查询 查询用户及用户发表的所有文章 更具用户id
    public UserInfo getUserAndArticleByUid(@Param("uid") Integer id);


    //添加用户，添加用户时 photo 时非必传参数 动态SQL
    public int add2(UserInfo userInfo);




    //根据名字查询
    public UserInfo getUserName(@Param("username") String username);



    //实现淘宝价格从低到高/从高到底的的排序
    //迁移到userinfo表里的时间创建
    public List<UserInfo> getOrderList(@Param("order") String order);








    //修改方法 （更具id修改名称）
    //Param中的参数 要和 xml中的参数对应
    public int update(@Param("id") Integer id,
                      @Param("username") String username);

    //删除操作
    public int del(@Param("id") Integer id);

    //添加数据 传的是一个对象 如何拿到对象的值
    //1.返回受影响的行数
    public int add(UserInfo userInfo);

    //2.添加用户 返回受影响的行数和自增的id
    public int addGetId(UserInfo userInfo);



}